package com.christophdietze.jack.client.embed;
import com.allen_sauer.gwt.log.client.Log;
import com.christophdietze.jack.client.MyGinjector;
import com.christophdietze.jack.client.event.UncaughtExceptionEvent;
import com.christophdietze.jack.client.util.GlobalEventBus;
import com.christophdietze.jack.client.view.embed.MainPanelEmbed;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.ui.RootLayoutPanel;
public class EmbedEntryPoint implements EntryPoint {
private static final MyGinjector injector = GWT.create(MyGinjector.class);
public void onModuleLoad() {
injector.getJavaScriptBindings();
final GlobalEventBus eventBus = injector.getEventBus();
GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
public void onUncaughtException(Throwable ex) {
Log.error("Uncaught exception:", ex);
String errorMessage = buildErrorMessage(ex);
eventBus.fireEvent(new UncaughtExceptionEvent(errorMessage));
}
});
MainPanelEmbed mainPanel = injector.getMainPanelEmbed();
clearAnyRemoveMeElement();
RootLayoutPanel.get().add(mainPanel);
Log.info("GWT Module " + this.getClass().getName() + " initialized.");
}
private void clearAnyRemoveMeElement() {
Element element = Document.get().getElementById("removeme");
if (element != null)
element.removeFromParent();
}
private String buildErrorMessage(Throwable ex) {
return buildErrorMessage(new StringBuilder(), ex).toString();
}
private StringBuilder buildErrorMessage(StringBuilder sb, Throwable ex) {
sb.append(ex.getClass().getName() + ": ");
sb.append(ex.getMessage());
if (ex.getCause() != null) {
sb.append("; Caused by: ");
return buildErrorMessage(sb, ex.getCause());
}
return sb;
}
}